/**
*FileContentManager is a Java based file manager desktop application, 
*it can show, edit and manipulate the content of the files archived inside a zip.
*
*Copyright (C) 2007 
*
*Created by Camila Sanchez [http://mimix.wordpress.com/], Rafael Naufal [http://rnaufal.livejournal.com] and Rodrigo [rdomartins@gmail.com]
*
*FileContentManager is free software; you can redistribute it and/or
*modify it under the terms of the GNU Lesser General Public
*License as published by the Free Software Foundation; either
*version 2.1 of the License, or (at your option) any later version.
*
*This library is distributed in the hope that it will be useful,
*but WITHOUT ANY WARRANTY; without even the implied warranty of
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*Lesser General Public License for more details.
*
*You should have received a copy of the GNU Lesser General Public
*License along with FileContentManager; if not, write to the Free Software
*Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
 * Created on 26/05/2007 10:32:24
 */

package br.com.jteam.jfcm.model.validator.impl;

import br.com.jteam.jfcm.model.FileType;
import br.com.jteam.jfcm.model.services.exception.FileCannotBeViewedException;
import br.com.jteam.jfcm.model.services.exception.IncorrectFileExtensionException;
import br.com.jteam.jfcm.model.util.FileTypeUtil;
import br.com.jteam.jfcm.model.validator.FileExtensionValidator;

/**
 * <p>
 * Validador que valida se determinado arquivo pode ser visualizado pelo
 * sistema.
 * 
 * @author Rafael Naufal <rafael.naufal@gmail.com>
 * @since 1.0
 * @version $Id$
 */
public class ShowFileExtensionValidator implements FileExtensionValidator
{
	/**
	 * <p>
	 * Construtor sem argumentos.
	 * 
	 */
	public ShowFileExtensionValidator()
	{
		super();
	}

	/**
	 * <p>
	 * Valida se o arquivo em quest&atilde;o pode ser renderizado pela aplica&ccedil;&atilde;o.
	 * 
	 * @param fileName -
	 *            nome do arquivo.
	 * @throws IncorrectFileExtensionException -
	 *             Caso o tipo de extens&atilde;o do arquivo ({@link
	 *             br.com.jteam.jfcm.model.FileType}) n&atilde;o possa ser renderizado
	 *             pelo sistema.
	 * @throws IllegalArgumentException -
	 *             caso o nome do arquivo seja nulo.
	 * @see br.com.jteam.jfcm.model.validator.FileExtensionValidator#validate(String)
	 */
	public void validate(String fileName) throws IncorrectFileExtensionException
	{
		if (fileName == null)
		{
			throw new IllegalArgumentException("File name cannot be null");
		}
		String extension = FileTypeUtil.extractFileExtension(fileName);
		for (FileType fileType : FileType.values())
		{
			if (fileType.getFileExtension().equalsIgnoreCase(extension))
			{
				return;
			}
		}
		throw new FileCannotBeViewedException("File " + fileName
						+ " cannot be renderized by FileContentViewer");
	}
}
